package 枚举;

public enum TestEnum {
    //这4个都是枚举对象，当为有参构造方法时，需要传入对应参数
    RED("red",1),BLACK("black",2),
    GREEN("green",3),WHITE("white",4);

    private String name;
    private int original;

    //注意！！！！！ 枚举的构造方法 默认是 私有的！！！！
    TestEnum(String name, int original) {
        this.name = name;
        this.original = original;
    }

    public static TestEnum getEnumKey (int key) {
        for (TestEnum t:TestEnum.values()) {
            if (t.original==key) {
                return t;
            }
        }
        return null;
    }

    public static void main(String[] args) {
        System.out.println(getEnumKey(2));
    }


    //2.枚举的使用 之常用方法
    public static void main2(String[] args) {
        TestEnum[] testEnums = TestEnum.values();
        for (int i = 0; i < testEnums.length; i++) {
            System.out.println(testEnums[i]+" "+testEnums[i].ordinal());
        }

        System.out.println(TestEnum.valueOf("GREEN"));//获取TestEnum中的枚举常量，valueOf()中的要在TestEnum存在
        System.out.println("====================");
        System.out.println(GREEN.compareTo(WHITE));
        //小于0，说明传入compareTo的参数定义的晚
    }

    //1.枚举的使用 之switch语句
    public static void main1(String[] args) {
        TestEnum testEnum=TestEnum.BLACK;

        //不能做switch的参数有四种：long boolean float double
        switch (testEnum) {
            case RED:
                System.out.println("red");
                break;
            case BLACK:
                System.out.println("black");
                break;
            case GREEN:
                System.out.println("green");
                break;
            case WHITE:
                System.out.println("white");
                break;
            default:
                break;
        }
    }
}
